package com.cs.beneficios.business.entity;

import com.cs.beneficios.business.model.AtributoVO;
//import com.cs.beneficios.business.model.ProgramaVO;
import com.cs.beneficios.business.model.ValorFlexibleVO;
import com.cs.beneficios.common.ConnectionFactory;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

import java.sql.Types;

import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;

public class AtributosDAO {
	/**
	 * Conexion a la base de datos.
	 */
	private Connection conn = null;
	private ConnectionFactory cf;

	/**
	 * Constructor que inicializa la conexion con la base de datos.
	 * 
	 * @param conn
	 *            Conexion con la base de datos.
	 */

	public AtributosDAO(ConnectionFactory cf) {
		this.cf = cf;
		try {
			this.conn = this.cf.getConnection();
		} catch (SQLException e) {
		}
	}

	public Collection GetAtributos(String Codigo, String vigencia, int opcion)
			throws SQLException {
		int CodigoSub = Integer.parseInt(Codigo.trim());
		String query = "";

		if (opcion == 0) {
			query = "SELECT CODIGO, TIPO_ATRIBUTO, NOMBRE, REST_CODIGO, ORDEN, LONGITUD, "
					+ "OBLIGATORIO, ETIQUETA, VALOR_SUGERIDO, VALIDAR_LISTA, "
					+ "VIGENCIA, TTVF_CODIGO_DOMINIO, DESCRIPCION, TIPO_DATO "
					+ "FROM TCS_BEN_SUBP_ATR_BENEFICIARIO "
					+ "WHERE SBPR_CODIGO="
					+ CodigoSub
					+ " AND VIGENCIA='"
					+ vigencia + "' " + "ORDER BY ORDEN ";
		} else {
			query = "SELECT CODIGO, TIPO_ATRIBUTO, NOMBRE, REST_CODIGO, ORDEN, LONGITUD, "
					+ "OBLIGATORIO, ETIQUETA, VALOR_SUGERIDO, VALIDAR_LISTA, "
					+ "VIGENCIA, TTVF_CODIGO_DOMINIO, DESCRIPCION, TIPO_DATO "
					+ "FROM TCS_BEN_SUBP_ATR_BENEFICIARIO "
					+ "WHERE SBPR_CODIGO="
					+ CodigoSub
					+ " AND VIGENCIA='"
					+ vigencia
					+ "' "
					+ "AND REST_CODIGO IS NULL ORDER BY ORDEN ";
		}

		ResultSet rst = null;
		ArrayList atributos = new ArrayList();
		// System.out.println("query: " + query);
		rst = cf.getRecordsRset(query, null, conn);
		AtributoVO atr = null;
		while (rst.next()) {
			atr = new AtributoVO();

			atr.setCodigo(rst.getString("CODIGO"));
			atr.setCodatributo(rst.getString("CODIGO"));
			atr.setTipoatributo(rst.getString("TIPO_ATRIBUTO"));
			atr.setNombre(rst.getString("NOMBRE"));
			atr.setRestriccion(rst.getString("REST_CODIGO"));
			atr.setOrden(rst.getString("ORDEN"));
			atr.setLongitud(rst.getString("LONGITUD"));
			atr.setObligatorio(rst.getString("OBLIGATORIO"));
			atr.setEtiqueta(rst.getString("ETIQUETA"));
			atr.setValorsugerido(rst.getString("VALOR_SUGERIDO"));
			atr.setValLista(rst.getString("VALIDAR_LISTA"));
			atr.setVigencia(rst.getString("VIGENCIA"));
			atr.setTipovalorflex(rst.getString("TTVF_CODIGO_DOMINIO"));
			atr.setDescripcion(rst.getString("DESCRIPCION"));
			atr.setTipodato(rst.getString("TIPO_DATO"));

			String strdominio = rst.getString("VALIDAR_LISTA");
			if (strdominio.equals("S")) {
				atr.setValoresflexibles(llenarLista(atr));
				String strVS = rst.getString("VALOR_SUGERIDO");
				atr.setDesvalorsugerido(getDesVFL(atr));
			}
			atributos.add(atr);
			atr = null;
		}
		rst.close();
		return atributos;
	}

	public AtributoVO GetAtributos(String codigoSub) throws SQLException {

		String query = "";
		query = "SELECT CODIGO, TIPO_ATRIBUTO, NOMBRE, REST_CODIGO, ORDEN, LONGITUD, "
				+ "OBLIGATORIO, ETIQUETA, VALOR_SUGERIDO, VALIDAR_LISTA, "
				+ "VIGENCIA, TTVF_CODIGO_DOMINIO, DESCRIPCION, TIPO_DATO "
				+ "FROM TCS_BEN_SUBP_ATR_BENEFICIARIO "
				+ "WHERE UPPER(TRIM(NOMBRE)) = 'GESTOR' AND SBPR_CODIGO="
				+ codigoSub;

		ResultSet rst = null;
		// System.out.println("getAtributos: " + query);
		rst = cf.getRecordsRset(query, null, conn);
		AtributoVO atr = null;
		if (rst.next()) {
			atr = new AtributoVO();

			atr.setCodigo(rst.getString("CODIGO"));
			atr.setCodatributo(rst.getString("CODIGO"));
			atr.setValorsugerido(rst.getString("VALOR_SUGERIDO"));
			atr.setTipovalorflex(rst.getString("TTVF_CODIGO_DOMINIO"));

			String strdominio = rst.getString("VALIDAR_LISTA");
			if (strdominio.equals("S")) {
				atr.setValoresflexibles(llenarLista(atr));
				atr.setDesvalorsugerido(getDesVFL(atr));
			}
		}

		rst.close();

		return atr;
	}

	/**
	 * Autor FELIPE RODRIGUEZ
	 * 
	 * @param Codigo
	 * @return
	 * @throws java.sql.SQLException
	 */
	public AtributoVO GetPropiedadesAtri(String Codigo, String vigencia)
			throws SQLException {
		int CodigoAtri = Integer.parseInt(Codigo.trim());
		String query = "SELECT CODIGO, TIPO_ATRIBUTO, NOMBRE, REST_CODIGO, ORDEN, LONGITUD, "
				+ "OBLIGATORIO, ETIQUETA, VALOR_SUGERIDO, VALIDAR_LISTA, "
				+ "VIGENCIA, TTVF_CODIGO_DOMINIO, DESCRIPCION, TIPO_DATO "
				+ "FROM TCS_BEN_SUBP_ATR_BENEFICIARIO "
				+ "WHERE CODIGO="
				+ CodigoAtri + " AND VIGENCIA = '" + vigencia + "'";

		ResultSet rst = null;
		rst = cf.getRecordsRset(query, null, conn);
		AtributoVO atr = null;
		while (rst.next()) {
			atr = new AtributoVO();

			atr.setCodigo(rst.getString("CODIGO"));
			atr.setCodatributo(rst.getString("CODIGO"));
			atr.setTipoatributo(rst.getString("TIPO_ATRIBUTO"));
			atr.setNombre(rst.getString("NOMBRE"));
			atr.setRestriccion(rst.getString("REST_CODIGO"));
			atr.setOrden(rst.getString("ORDEN"));
			atr.setLongitud(rst.getString("LONGITUD"));
			atr.setObligatorio(rst.getString("OBLIGATORIO"));
			atr.setEtiqueta(rst.getString("ETIQUETA"));
			atr.setValorsugerido(rst.getString("VALOR_SUGERIDO"));
			atr.setValLista(rst.getString("VALIDAR_LISTA"));
			atr.setVigencia(rst.getString("VIGENCIA"));
			atr.setTipovalorflex(rst.getString("TTVF_CODIGO_DOMINIO"));
			atr.setDescripcion(rst.getString("DESCRIPCION"));
			atr.setTipodato(rst.getString("TIPO_DATO"));

		}
		rst.close();
		return atr;
	}

	public AtributoVO GetPropiedadesAtri(String Codigo) throws SQLException {
		int CodigoAtri = Integer.parseInt(Codigo.trim());
		// AtributoVO atributos = new AtributoVO();
		String query = "SELECT CODIGO, TIPO_ATRIBUTO, NOMBRE, REST_CODIGO, ORDEN, LONGITUD, "
				+ "OBLIGATORIO, ETIQUETA, VALOR_SUGERIDO, VALIDAR_LISTA, "
				+ "VIGENCIA, TTVF_CODIGO_DOMINIO, DESCRIPCION, TIPO_DATO "
				+ "FROM TCS_BEN_SUBP_ATR_BENEFICIARIO "
				+ "WHERE CODIGO="
				+ CodigoAtri + " ";

		ResultSet rst = null;
		rst = cf.getRecordsRset(query, null, conn);
		AtributoVO atr = null;
		while (rst.next()) {
			atr = new AtributoVO();

			atr.setCodigo(rst.getString("CODIGO"));
			atr.setCodatributo(rst.getString("CODIGO"));
			atr.setTipoatributo(rst.getString("TIPO_ATRIBUTO"));
			atr.setNombre(rst.getString("NOMBRE"));
			atr.setRestriccion(rst.getString("REST_CODIGO"));
			atr.setOrden(rst.getString("ORDEN"));
			atr.setLongitud(rst.getString("LONGITUD"));
			atr.setObligatorio(rst.getString("OBLIGATORIO"));
			atr.setEtiqueta(rst.getString("ETIQUETA"));
			atr.setValorsugerido(rst.getString("VALOR_SUGERIDO"));
			atr.setValLista(rst.getString("VALIDAR_LISTA"));
			atr.setVigencia(rst.getString("VIGENCIA"));
			atr.setTipovalorflex(rst.getString("TTVF_CODIGO_DOMINIO"));
			atr.setDescripcion(rst.getString("DESCRIPCION"));
			atr.setTipodato(rst.getString("TIPO_DATO"));

		}

		if (Codigo.equalsIgnoreCase("1234")) {
			atr = new AtributoVO();

			atr.setCodigo("1234");
			atr.setCodatributo("1234");
			atr.setTipoatributo("B");
			atr.setNombre("TERCERO");
			atr.setRestriccion("");
			atr.setOrden("35");
			atr.setLongitud("200");
			atr.setObligatorio("N");
			atr.setEtiqueta("TERCERO");
			atr.setValorsugerido("");
			atr.setValLista("N");
			atr.setVigencia("A");
			atr.setTipovalorflex("");
			atr.setDescripcion("");
			atr.setTipodato("A");

		}
		rst.close();
		return atr;
	}

	private Collection llenarLista(AtributoVO atr) throws SQLException {
		String strCod = (String) atr.getTipovalorflex();
		int iCodTvfl = Integer.parseInt(strCod.trim());

		String query = "SELECT TCS_VALOR_FLEXIBLE.DESCRIPCION DESCRIPCIONVFL, TCS_VALOR_FLEXIBLE.CODIGO_VALOR CODIGOVFL "
				+ "FROM paoyer.TCS_VALOR_FLEXIBLE, paoyer.TCS_TIPO_VALOR_FLEX "
				+ "WHERE TCS_TIPO_VALOR_FLEX.CODIGO ="
				+ iCodTvfl
				+ " "
				+ "AND TCS_VALOR_FLEXIBLE.TVF_CODIGO ="
				+ iCodTvfl
				+ " "
				+ "AND TCS_VALOR_FLEXIBLE.VIGENCIA = 'S' order by TCS_VALOR_FLEXIBLE.DESCRIPCION";

		ResultSet rs = null;
		ArrayList valorflex = new ArrayList();
		// System.out.println("queryLLenarLista: " + query);
		rs = cf.getRecordsRset(query, null, conn);
		ValorFlexibleVO vfl = null;
		while (rs.next()) {
			vfl = new ValorFlexibleVO();
			// vfl.setCodigovfl(codigovfl);

			vfl.setDescripcionvf(rs.getString("DESCRIPCIONVFL"));
			Object obval = (Object) rs.getString("CODIGOVFL");
			if (obval != null) {
				vfl.setCodigovfl(rs.getString("CODIGOVFL"));
				vfl.setDescripciontvfl(rs.getString("DESCRIPCIONVFL"));
			} else {
				vfl.setCodigovfl(rs.getString("DESCRIPCIONVFL"));
				vfl.setDescripciontvfl(rs.getString("DESCRIPCIONVFL"));
			}

			valorflex.add(vfl);
			vfl = null;

		}
		rs.close();

		return valorflex;

	}

	public int getCodMaxRestriccion() throws SQLException {

		int codigo = 0;
		String strSql = " SELECT MAX(CODIGO)CODIGO FROM TCS_BEN_RESTRICCION";

		//
		ResultSet rs = null;
		rs = cf.getRecordsRset(strSql, null, conn);
		while (rs.next()) {
			codigo = rs.getInt("CODIGO");
		}
		rs.close();
		return codigo;
	}

	private String getDesVFL(AtributoVO atr) throws SQLException {
		String strCod = (String) atr.getValorsugerido();
		String strCodvfl = "";
		if ((Object) strCod != null) {

			int iCodVfl = Integer.parseInt(strCod.trim());

			String query = "SELECT TCS_VALOR_FLEXIBLE.DESCRIPCION CODIGOVFL "
					+ "FROM paoyer.TCS_VALOR_FLEXIBLE "
					+ "WHERE TCS_VALOR_FLEXIBLE.CODIGO =" + iCodVfl + " ";

			ResultSet rs = null;
			rs = cf.getRecordsRset(query, null, conn);

			while (rs.next()) {
				strCodvfl = rs.getString("CODIGOVFL");

			}
			rs.close();
		}

		return strCodvfl;

	}

	public int getAtributosVallista(String strCodSubpro) throws SQLException {

		int iCodSubpro = Integer.parseInt(strCodSubpro.trim());
		int ActualizarAtriVallista = 0;
		String query = "SELECT CODIGO, ETIQUETA, VALIDAR_LISTA "
				+ "FROM TCS_BEN_SUBP_ATR_BENEFICIARIO " + "WHERE SBPR_CODIGO="
				+ iCodSubpro + " " + "AND TTVF_CODIGO_DOMINIO IS NULL "
				+ "AND VALIDAR_LISTA='S'";

		ResultSet rs = null;
		rs = cf.getRecordsRset(query, null, conn);
		while (rs.next()) {
			String strCodAtri = rs.getString("CODIGO");
			ActualizarAtriVallista = ActuAtriVallista(strCodSubpro, strCodAtri);
		}
		rs.close();

		return ActualizarAtriVallista;
	}

	public int InsertBeneficiarioAtri(String strValor, String strTipodato,
			String strCodatri, String Codbeneficiario, int i,
			String strArrIns[]) throws SQLException {

		int iCodAtributo = Integer.parseInt(strCodatri.trim());
		int iCodbeneficiario = Integer.parseInt(Codbeneficiario.trim());
		String sql = "";
		String sql2 = "";
		if (strTipodato.equals("A") || strTipodato.equals("L")) {
			sql = "VALOR_CAR_ATR";
			sql2 = "upper('" + strValor + "')";
		} else {
			if (strTipodato.equals("N")) {
				System.err.print("VALOR_NUM_ATR: " + strValor);
				sql = "VALOR_NUM_ATR";
				int valor = 0;
				if (!strValor.equals("")) {
					valor = Integer.parseInt(strValor.trim());
				}
				sql2 = "" + valor + "";

			} else {
				System.err.print("VALOR_FEC_ATR: " + strValor);
				sql = "VALOR_FEC_ATR";
				sql2 = "to_date('" + strValor + "','dd/mm/RRRR')";
			}
		}

		String[] arrAux = { strArrIns[0], strArrIns[1], strArrIns[0],
				strArrIns[1] };

		String query = "MERGE INTO TCS_BEN_BENEFICIARIO_ATRIBUTO USING DUAL"
				+ " ON (BEN_CODIGO = "
				+ iCodbeneficiario
				+ " AND SAB_CODIGO = "
				+ iCodAtributo
				+ ")"
				+ " WHEN NOT MATCHED THEN"
				+ " INSERT (CODIGO, SAB_CODIGO, BEN_CODIGO, "
				+ sql
				+ ", USUARIO_CREA, FECHA_CREA, TERMINAL_CREA) "
				+ " VALUES(SCS_BEN_BRA.NEXTVAL, "
				+ iCodAtributo
				+ ", "
				+ ""
				+ iCodbeneficiario
				+ ", "
				+ sql2
				+ ", ?,to_date(sysdate,'dd/mm/RRRR'),?) "
				+ " WHEN MATCHED THEN"
				+ " UPDATE SET "
				+ sql
				+ " = "
				+ sql2
				+ ", USUARIO_MODIFICA = ?,"
				+ " FECHA_MODIFICA = to_date(sysdate,'dd/mm/RRRR'), TERMINAL_MODIFICA = ?";

		// System.out.println("en beneficiario: " + query);
		int bInsertoCorrectamente = cf.execSql(query, arrAux, conn);
		return bInsertoCorrectamente;

	}

	public int InsertBeneficioAtri(String strValor, String strTipodato,
			String strCodatri, String Codbeneotor, int i, String strArrIns[])
			throws SQLException {

		int iCodAtributo = Integer.parseInt(strCodatri.trim());
		int iCodbeneotorgado = Integer.parseInt(Codbeneotor.trim());
		String fecha = "select to_char(FECHA_BENEFICIO+" + i
				+ ",'dd/mm/RRRR') fecha " + " from tcs_ben_beneficio_otorgado"
				+ " where codigo = ?";
		String param[] = { Codbeneotor };
		ResultSet rs = cf.getRecordsRset(fecha, param, conn);
		if (rs.next()) {
			fecha = rs.getString("fecha");
		} else {
			fecha = "sysdate";
		}
		String sql = "";
		String sql2 = "";
		if (strTipodato.equals("A") || strTipodato.equals("L")) {
			System.err
					.print("InsertBeneficioAtri - VALOR_CAR_ATR: " + strValor);
			sql = "VALOR_CAR_ATR";
			sql2 = "upper('" + strValor + "')";
		} else {
			if (strTipodato.equals("N")) {
				System.err.print("InsertBeneficioAtri - VALOR_NUM_ATR: "
						+ strValor);
				sql = "VALOR_NUM_ATR";
				int valor = 0;
				if (!strValor.equals("")) {
					valor = Integer.parseInt(strValor.trim());
				}
				sql2 = "" + valor + "";

			} else {
				System.err.print("InsertBeneficioAtri - VALOR_FEC_ATR: "
						+ strValor);
				sql = "VALOR_FEC_ATR";
				sql2 = "to_date('" + strValor + "','dd/mm/RRRR')";
			}
		}

		String query = "INSERT INTO TCS_BEN_BENEFICIO_ATRIBUTO (CODIGO, BOT_CODIGO, "
				+ "SAB_CODIGO, "
				+ sql
				+ ", CAMPO_F1, "
				+ "usuario_crea, fecha_crea, terminal_crea) "
				+ "VALUES(SCS_BEN_BAT.NEXTVAL, "
				+ iCodbeneotorgado
				+ ", "
				+ ""
				+ iCodAtributo
				+ ", "
				+ sql2
				+ ", to_date('"
				+ fecha
				+ "','dd/mm/RRRR'),?,to_date(sysdate,'dd/mm/RRRR'),?)";
		System.err.print("en beneficio: " + query);
		int bInsertoCorrectamente = cf.execSql(query, strArrIns, conn);
		return bInsertoCorrectamente;

	}

	public int updateBeneficioAtri(String strValor, String strTipodato,
			String strCodatri, String Codbeneotor, int i, String strArrIns[])
			throws SQLException {
		String fecha = "select to_char(FECHA_BENEFICIO+" + i
				+ ",'dd/mm/RRRR') fecha " + " from tcs_ben_beneficio_otorgado"
				+ " where codigo = ?";
		String param[] = { Codbeneotor };
		ResultSet rs = cf.getRecordsRset(fecha, param, conn);
		if (rs.next()) {
			fecha = rs.getString("fecha");
		} else {
			fecha = "sysdate";
		}
		String sql = "";
		String sql2 = "";
		if (strTipodato.equals("A") || strTipodato.equals("L")) {
			sql = "VALOR_CAR_ATR";
			sql2 = "upper(''" + strValor + "'')";
		} else {
			if (strTipodato.equals("N")) {
				sql = "VALOR_NUM_ATR";
				int valor = 0;
				if (!strValor.equals("")) {
					valor = Integer.parseInt(strValor.trim());
				}
				sql2 = "" + valor + "";

			} else {
				sql = "VALOR_FEC_ATR";
				sql2 = "to_date(''" + strValor + "'',''dd/mm/RRRR'')";
			}
		}

		String strSql = "{call PCS_BEN_UPDATE_BENATR(" + Codbeneotor + ", "
				+ strCodatri + ", '" + strArrIns[0] + "', '" + strArrIns[1]
				+ "', '" + sql + "'," + "'" + sql2 + "', 'to_date(''" + fecha
				+ "'',''dd/mm/RRRR'')', ?)}";
		CallableStatement cs = null;
		// System.out.println("updateBeneficioAtri :" + strSql);
		cs = conn.prepareCall(strSql);

		cs.registerOutParameter(1, Types.INTEGER);
		cs.execute();

		return cs.getInt(1);

	}

	public int InsertRestriccion(String Arr[]) throws SQLException {

		String query = "INSERT INTO TCS_BEN_RESTRICCION(CODIGO, DESCRIPCION, "
				+ "OPERADOR, OPERANDO1, OPERANDO2, ALERTA, VIGENCIA, CAMPO_A4, "
				+ "usuario_crea, fecha_crea, terminal_crea, "
				+ "usuario_modifica, fecha_modifica, terminal_modifica) "
				+ "VALUES(SCS_BEN_SAB.NEXTVAL,upper(?),?,?,?,?,?,?,?,to_date(?,'dd/mm/rrrr'),?,?,to_date(?,'dd/mm/rrrr'),?) ";

		int bInsertoCorrectamente = cf.execSql(query, Arr, conn);
		return bInsertoCorrectamente;

	}

	public int ActivarAtributo(String strCodSubpro, String strCodatri)
			throws SQLException {

		int iCodAtributo = Integer.parseInt(strCodatri.trim());
		int iCodSubpro = Integer.parseInt(strCodSubpro.trim());

		String query = "UPDATE TCS_BEN_SUBP_ATR_BENEFICIARIO SET "
				+ "VIGENCIA = 'A' " + "WHERE CODIGO=" + iCodAtributo + " "
				+ "AND SBPR_CODIGO=" + iCodSubpro + " ";

		int ActualizoCorrectamente = cf.execSql(query, null, conn);
		return ActualizoCorrectamente;

	}

	public int ActuAtriVallista(String strCodSubpro, String strCodatri)
			throws SQLException {

		int iCodAtributo = Integer.parseInt(strCodatri.trim());
		int iCodSubpro = Integer.parseInt(strCodSubpro.trim());

		String query = "UPDATE TCS_BEN_SUBP_ATR_BENEFICIARIO SET "
				+ "VALIDAR_LISTA = 'N' " + "WHERE CODIGO=" + iCodAtributo + " "
				+ "AND SBPR_CODIGO=" + iCodSubpro + " ";

		int ActualizoCorrectamente = cf.execSql(query, null, conn);
		return ActualizoCorrectamente;

	}

	public int ActuCampoRestAtri(String strCodSubpro, String strCodatri,
			int iCodMaxRest, String strArrAct[]) throws SQLException {

		int iCodAtributo = Integer.parseInt(strCodatri.trim());
		int iCodSubpro = Integer.parseInt(strCodSubpro.trim());

		String query = "UPDATE TCS_BEN_SUBP_ATR_BENEFICIARIO SET "
				+ "REST_CODIGO =" + iCodMaxRest + ", " + "OBLIGATORIO = 'S', "
				+ "usuario_modifica = ?,"
				+ "fecha_modifica = to_date(?,'dd/mm/rrrr'), "
				+ "terminal_modifica = ?" + "WHERE CODIGO=" + iCodAtributo
				+ " " + "AND SBPR_CODIGO=" + iCodSubpro + " ";

		int ActualizoCorrectamente = cf.execSql(query, strArrAct, conn);
		return ActualizoCorrectamente;

	}

	public List ViewAtributos(String strSubprograma) throws SQLException {
		int sub = Integer.parseInt(strSubprograma.trim());
		String strSQL;
		List listaAtriEsp = new LinkedList();

		strSQL = "SELECT ORDEN, ETIQUETA, VIGENCIA "
				+ "FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE SBPR_CODIGO=" + sub
				+ " " + "ORDER BY ORDEN";

		ResultSet rs = cf.getRecordsRset(strSQL, null, conn);
		while (rs.next()) {
			AtributoVO a1 = new AtributoVO();
			a1.setEtiqueta(rs.getString("ETIQUETA"));
			a1.setOrden(rs.getString("ORDEN"));
			a1.setVigencia(rs.getString("VIGENCIA"));
			listaAtriEsp.add(a1);
			a1 = null;
		}
		rs.close();
		// cf.closeConnection(conn);

		return listaAtriEsp;
	}

	public String GetNameAtri(String strCodeAtri) throws SQLException {
		String query = "SELECT NOMBRE, DESCRIPCION FROM TCS_BEN_SUBP_ATR_BENEFICIARIO "
				+ "WHERE CODIGO = '" + strCodeAtri + "'";
		String strName = null;
		ResultSet rs = cf.getRecordsRset(query, null, conn);
		if (rs.next()) {
			strName = rs.getString("NOMBRE");
		}
		rs.close();
		return strName;
	}

	public String GetDateBeneficio(String strIncrement) throws SQLException {
		String query = "select to_char(SYSDATE+" + strIncrement
				+ ",'dd/mm/RRRR') fecha from dual ";
		String strDate = null;
		ResultSet rs = cf.getRecordsRset(query, null, conn);
		if (rs.next()) {
			strDate = rs.getString("fecha");
		}
		rs.close();
		return strDate;
	}

	/**
	 * Mï¿½todo que devuelve el cï¿½digo del atributo genï¿½rico a
	 * partir del nombre
	 * 
	 * @param strName
	 * @return
	 */
	public String getCodeAtributoGenerico(String strName) throws SQLException {
		String query = "SELECT CODIGO FROM TCS_BEN_ATR_GENERICO "
				+ "WHERE NOMBRE  = '" + strName + "'";

		String strCode = null;
		ResultSet rst = cf.getRecordsRset(query, null, conn);
		if (rst.next()) {
			strCode = rst.getString("CODIGO");
		}
		rst.close();
		return strCode;

	}

	public int ActuVallista(String strCodatri) throws SQLException {

		int iCodAtributo = Integer.parseInt(strCodatri.trim());
		String query = "UPDATE TCS_BEN_SUBP_ATR_BENEFICIARIO SET "
				+ "VALIDAR_LISTA = 'N', " + "VALOR_SUGERIDO = '' "
				+ "WHERE CODIGO=" + iCodAtributo;

		int ActualizoCorrectamente = cf.execSql(query, null, conn);
		return ActualizoCorrectamente;

	}

	public Connection getConn() {
		return conn;
	}

}